/**
 * Implementacion de una ventana abstracta que muestra un formulario de captura de informaci&oacute;.
 * @class Extmx.WizardForm
 * Ventana preconfigurada para encapsular un formulario, con botones de aceptar,
 * cancelar, siguiente, anterior y  barra de estado para mostrar mensajes
 *
 * @extends Extmx.WindowForm
 * @autor Ing. Josue Hernandez Gomez<br>
 *        joshua@extjs.mx<br>
 *        http://www.joshua.com.mx
 * @fecha 22 de octubre 2010. Oaxaca, M&eacute;xico
 *
 */
Ext.ns("Extmx.WizardForm");
Extmx.WizardForm = Ext.extend(Extmx.WindowForm,{

    initComponent: function (){
        Extmx.WizardForm.superclass.initComponent.apply(this,arguments);

        this.on("render",function (){

            this.form= this.form || this.items.items[0];
            this.form.on({
                scope:this,
                sisiguiente: function(){
                    this.siguienteDisable(false);
                },
                nosiguiente: function(){
                    this.siguienteDisable(true)
                },
                sianterior: function(){
                    this.anteriorDisable(false)
                },
                noanterior: function(){
                    this.anteriorDisable(true)
                },
                siflechas: function(){
                    this.flechasDisable(false)
                },
                noflechas: function(){
                    this.flechasDisable(true)
                },
                siguardar: function(){
                    this.guardarDisable(false);
                },
                noguardar: function(){
                    this.guardarDisable(true);
                },
                ocultarbotones: function(){
                    this.btnAnterior.hide();
                    this.btnSiguiente.hide();
                }
            });

            //guardar las referencias a variables internas
            this.btnAnterior = Ext.getCmp("antt"+this.id);
            this.btnSiguiente = Ext.getCmp("sigg"+this.id);
            this.btnGuardar = Ext.getCmp("save"+this.id);

        }, this);
    },
    
	siguienteDisable: function (disabled){
		this.btnSiguiente.setDisabled(disabled);
	},
	
	anteriorDisable: function (disabled){
		this.btnAnterior.setDisabled(disabled);
	},
	
	flechasDisable: function(disabled){
		this.siguienteDisable(disabled);
		this.anteriorDisable(disabled);
	},
	
	guardarDisable: function(disabled){
		this.btnGuardar.setDisabled(disabled);
	},
	
    getButtons: function (){
        return ['->',{
            text:"Anterior",
            iconCls:"arrow_left_icon24",
            scope:this,
            scale:'medium',
            id:"antt"+this.id,
            disabled:true,
            handler: this.onAnterior
        },{
            text:"Siguiente",
            id:"sigg"+this.id,
            iconCls:"arrow_rigth_icon24",
            iconAlign :'right',
            scope:this,
            scale:'medium',
            disabled:true,
            handler: this.onSiguiente
        },{
            iconCls:this.txtIconClsGuardar,
            text:this.txtBtnGuardar,
            id:"save"+this.id,
            scope:this,
            scale:'medium',
			disabled: true,
            handler: this.onGuardar
        },{
            text: 'Cancelar',
            iconCls:"cross_cancel_icon24",
            id:"cancel"+this.id,
            scope:this,
            scale:'medium',
            handler: this.onCancelar
        }];
    },

    onAnterior: function (){
        this.form.mostrarAnterior();
    },

    onSiguiente: function (){
        this.form.mostrarSiguiente();
    },
    
    /**
     * @method mascara Enmascara el cuerpo de la ventana. Inhabilita los botones. Establece el mensaje de cargando en el status bar
     **/
    mascara: function (){
        this.body.mask(go.imgCargando+" Por favor espere...");
        this.cargando("Cargando...");
        this.footer.mask();
    },

    /**
     * @method unmask Desenmascara el cuerpo de la ventana. Habilita los botones. Establece el mensaje de listo en el status bar
     **/
    unmask: function (){
        this.body.unmask();
        this.listo();
        this.footer.unmask();
    }
});